package com.rednose.videoplayer.dialogs;

import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.media.AudioManager;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.SeekBar;
import android.widget.TextView;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatDialogFragment;

import com.rednose.videoplayer.R;

public class VolumeDialog extends AppCompatDialogFragment {

    private ImageView cross;                //定义一个ImageView对象，用于关闭音量对话框
    private TextView volume_no;             //定义一个TextView对象，用于显示音量百分比
    private SeekBar seekBar;                //定义一个SeekBar对象，用于调节音量
    AudioManager audioManager;              //定义一个AudioManager对象，用于获取系统音量

    public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());  //创建一个AlertDialog.Builder对象
        LayoutInflater inflater = getActivity().getLayoutInflater();         //获取LayoutInflater对象
        View view = inflater.inflate(R.layout.vol_dialog_item, null);        //加载vol_dialog_item布局
        builder.setView(view);                                               //设置对话框视图为vol_dialog_item布局
        getActivity().setVolumeControlStream(AudioManager.STREAM_MUSIC);     //设置音量控制流为音乐流

        cross = view.findViewById(R.id.vol_close);                           //从布局文件中获取关闭音量对话框的ImageView
        volume_no = view.findViewById(R.id.vol_number);                      //从布局文件中获取显示音量百分比的TextView
        seekBar = view.findViewById(R.id.vol_seekbar);                       //从布局文件中获取音量调节的SeekBar

        audioManager = (AudioManager) getContext().getSystemService(Context.AUDIO_SERVICE);  //获取系统音频服务
        seekBar.setMax(audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC));          //设置SeekBar的最大值为音乐流的最大音量
        seekBar.setProgress(audioManager.getStreamVolume(AudioManager.STREAM_MUSIC));         //设置SeekBar的当前值为音乐流的当前音量
         //设置音量百分比

        seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {            //设置SeekBar的监听器
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {  //当SeekBar的进度改变时
                audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, progress, 0);          //设置音乐流的音量
                int mediavolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);     //获取音乐流的音量
                int maxvol = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);       //获取音乐流的最大音量
                double volPer = Math.ceil((((double) mediavolume / (double) maxvol) * (double) 100));  //计算音量百分比
                volume_no.setText("" + volPer);                                                  //设置音量百分比
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {  //当开始拖动SeekBar时
            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {   //当停止拖动SeekBar时
            }
        });
        cross.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dismiss();
            }
        });

        return builder.create();                //创建对话框
    }
}
